home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hardcore Gamer Resource Kit
/
Hardcore Gamer Resource Kit - Disc 2.iso
/
Pc
/
U_Z
/
U2FIX.ZIP
/
CHANGES.TXT
next >
Wrap
Text File
|
1996-04-25
|
5KB
|
137 lines
Ultima II -- The Fixed Version
Patch by Mike Marcelais, The Moonstone Dragon.
April 25, 1996
The Problem:
------------
When Ultima II was first released, it was released on three floppy
sides: The Boot Disk, the Player Disk, and the Galactic Disk. The
last two of these disks held the city and world maps, as well as monster
lists and conversation information for Earth and the other planets.
The names used on these two disks for many of the files were
identical. When the Ultima I-VI CD was released, all of the files were
merely dumped together into a single directory which caused some of
the files to be overwritten. Hence, cities, dungeons, and worlds
on the Galactic disk with the same name as a location on Earth are not
available and the Earth Map is used instead.
The Solution:
-------------
The data files are identical to the data files used on the original
Apple II version, so I copies the contents of the Apple II Galactic
disk onto my PC (via a Null Modem cable) and renamed all of the fiels
from MONX??, MAPX??, and TLKX?? to MONG??, MAPG??, and TLKG??.
I then looked at the executable itself: ULTIMAII.EXE
There was code left in there to handle disk swapping. That code
no longer does much, but there was a gap where old code used to reside.
Disassembling that code led to the following discoveries:
On or about location CS:71F1 (all values are hex), there is the code
that prompts you for your Player Disk (after returning from the galactic
view), however the code is skipped completely by a JMP instruction. I
replaced the code with:
71F1: B0 58 mov al,58
71F3: E8 15 00 call 720b
71F6: 90 nop
71F7: 90 nop
71F8: 90 nop
58 is ascii 'X'. I'll get into what 720b does later. ;-)
On or about location CS:722B, there is the code that prompt for the
Galactic Disk. That code is replaced with:
722B: B0 58 mov al,47
722D: E8 DB FF call 720b
7230: 90 nop
7231: 90 nop
7232: 90 nop
47 is ascii 'G'.
Now, location CS:720b used to contain the message (INSERT GALACTIC DISK)
but that message is no longer used. Anyway, it gave me a placed to
stick some code that I needed. The code I put there is:
720B: 2E A2 BA 22 mov cs:[22ba],al
720F: 2E A2 CC 22 mov cs:[22cc],al
7213: 2E A2 F7 22 mov cs:[22f7],al
7217: C3 ret
7218: 00 2D 55 44
721C: 49 43 2D db 00,"-UDIC-"
The three mov instructions overrite the location in memory where the
name of the MON, MAP, and TLK file is loaded from. Other code in the
program overrites the number stored at that location. As you can see,
the Galactic code passes in 'G' for al, and the Player code passes in 'X'
for al. Hence, all of the normal maps will be loaded as MAPX??, and
all of the Galactic maps will be loaded in as MAPG?? so there is no longer
any name conflicts.
Installing:
-----------
Copy all of the files from the Ultima I-VI CD in the Ultima II directory
into a directory on your hard drive. Then copy all of the MAPG, MONG, and
TLKG files in this archive into that directory. Then run the program
U2PATCH.COM to apply these patches OR manually patch the file ULTIMAII.EXE
using the following templates below:
Offset: 73E8
Original: e8 52 f9 bb 14 00 e8 20 95 eb 06 dd 3d 1b ff 75
Replace: b0 58 e8 15 00 90 90
Original: ef b0 00 a2 4a 00 b0 04 a2 49 00 e8 83 00 c3 eb
Replace: 90
Original: 19 dd 28 49 4e 53 45 52 54 20 47 41 4c 41 43 54
Replace: 2e a2 ba 22 2e a2 cc 22 2e a2 f7 22 c3
Original: 49 43 20 44 49 53 4b 29 8d 00 e8 18 f9 bb 14 00
Replace: 00 2d 55 43 2d
Original: e8 e6 94 eb 06 dd 3d 1b ff 75 ef b0 00 a2 4a 00
Replace: b0 47 e8 db ff 90 90 90
Finally, rename the following files from ???x?? to ???g?? because
these are Galactic Disk files on the CD that were not overwritten by
a Player Disk file:
map: 44, 50, 60, 61, 70, 71, 80, 81, 82, 85, 90, 92, 93
mon: 44, 50, 60, 61, 70, 71
tlk: 61, 71, 81, 82, 92, 93
The following mon files need to be copied since they appear in
identical form on both the Player and Galactic Disk:
mon: 10, 15, 30, 40, 45
A batch file named RENGAL.BAT automatically does this automatically.
CREDITS:
--------
Thanks to `Gametools' for providing an interactive TSR debugger.
Thanks to the Asimov FTP site and comp.emulators.apple2 for
providing an IBM disk image of the Apple II Galactic Disk.
Thanks to Origin for making such an excellent series of games.
And finally, thanks to the Royal Order of the Ultima Dragons
on the Internet for noticing this problem in the first place.